package com.liliudong.template.biz.service.sys;

import com.baomidou.mybatisplus.extension.service.IService;
import com.liliudong.template.common.dto.sys.SysUserAddOrUpdateDTO;
import com.liliudong.template.common.entity.sys.SysUser;
import com.liliudong.template.common.vo.PageVO;
import com.liliudong.template.common.vo.sys.SysUserBaseVO;
import com.liliudong.template.common.vo.sys.SysUserLoginSuccessVO;
import com.liliudong.template.common.vo.sys.SysUserPageVO;
import com.liliudong.template.common.vo.sys.SysUserProfileVO;

/**
 * sys用户服务
 *
 * @author ldli5
 * @date 2024/06/18
 */
public interface SysUserService extends IService<SysUser> {

	/**
	 * 登录
	 *
	 * @param username 用户名
	 * @param password 暗语
	 * @return
	 */
	SysUserLoginSuccessVO login(String username, String password);

	/**
	 * 按用户名获取一个
	 *
	 * @param username 用户名
	 * @return {@link SysUser }
	 */
	SysUser getOneByUsernameIgnoreDataPermission(String username);

	/**
	 * 轮廓
	 *
	 * @return {@link SysUserProfileVO }
	 */
	SysUserProfileVO profile();

	/**
	 * 按id获取忽略数据权限
	 *
	 * @param userId 用户id
	 * @return {@link SysUser }
	 */
	SysUser getByIdIgnoreDataPermission(long userId);

	/**
	 * 添加一个
	 *
	 * @param sysUserAddOrUpdateDTO sys用户添加dto
	 */
	void addOne(SysUserAddOrUpdateDTO sysUserAddOrUpdateDTO);

	/**
	 * 按id修改
	 *
	 * @param userId                用户id
	 * @param sysUserAddOrUpdateDTO sys用户添加或更新dto
	 */
	void modifyById(Long userId, SysUserAddOrUpdateDTO sysUserAddOrUpdateDTO);

	/**
	 * 查询页面
	 *
	 * @param current 现在
	 * @param size    大小
	 * @return {@link PageVO }<{@link SysUserPageVO }>
	 */
	PageVO<SysUserPageVO> queryPage(Long current, Long size);

	/**
	 * id明细
	 *
	 * @param id 身份证件
	 * @return {@link SysUserBaseVO }
	 */
	SysUserBaseVO detailById(Long id);
}
